﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using CapturarObjetos.Objetos;


namespace CapturarObjetos.Cenas
{
    public class Cena_Intro
    {
        private Texture2D fundo;

        private GameWindow Window;

        public Song musica;


        Objetos.BotaoComecar comecar;
        Objetos.BotaoCreditos creditos;
        Objetos.BotaoInstrucoes instrucoes;

        Texture2D botao_creditos;
        Texture2D botao_comecar;
        Texture2D botao_instrucoes;

        /// <summary>
        /// Faz a checagem do clique em cima de alguma opção do menu, só irá para opção desejada quando soltar o clique.
        /// </summary>
        bool checandoclique = false;

        bool ponteiroVisivel = true;

        //ponteiro sem a classe
        Texture2D ponteiroImagem;

        int ponteiroPosX;
        int ponteiroPosY;

        public Song musicajogo;
        /// <summary>
        /// Música do Menu do jogo.
        /// </summary>
        public Song MusicaIntroducao;
        /// <summary>
        /// Som que toca ao apertar o botão Começar.
        /// </summary>
        public Song MusicaStart;


        Ponteiro ponteiro;
        /// <summary>
        /// Aqui acontece a troca das telas, Jogo, Créditos, Instruçoes e a tela inicial.
        /// </summary>
        public enum TrocaMenu
        {
            Comecar,
            Introducao,
            Creditos,
            Instrucoes,
        }
        /// <summary>
        /// Aqui é onde troca as cores das letras ao passar o mouse emcima.
        /// </summary>
        public enum TrocaLetraMenu
        {
            Comecar,
            Introducao,
            Creditos,
            Instrucoes,
        }
        TrocaLetraMenu LetraAtual = TrocaLetraMenu.Introducao;

        TrocaMenu MenuAtual = TrocaMenu.Introducao;

        public Cena_Intro(ContentManager Content, GameWindow Window)
        {
            comecar = new BotaoComecar(Content.Load<Texture2D>("Comecar"));
            creditos = new BotaoCreditos(Content.Load<Texture2D>("Creditos"));
            instrucoes = new BotaoInstrucoes(Content.Load<Texture2D>("Instrucoes"));

            botao_creditos = Content.Load<Texture2D>("Creditos");
            botao_comecar = Content.Load<Texture2D>("Comecar");
            botao_instrucoes = Content.Load<Texture2D>("Instrucoes");

            MusicaIntroducao = Content.Load<Song>("MusicaIntro");
            MusicaStart = Content.Load<Song>("Iniciando");
            musicajogo = Content.Load<Song>("DST-AngryMod");

            this.Window = Window;
            fundo = Content.Load<Texture2D>("telaintro");

            ponteiroImagem = Content.Load<Texture2D>("ponteiro");

            //MediaPlayer.Play(MusicaIntroducao);
        }

        public void Update(GameTime gameTime, KeyboardState teclado_atual, KeyboardState teclado_anterior, MouseState mouse_atual, MouseState mouse_anterior)
        {
            ponteiroPosX = mouse_atual.X;
            ponteiroPosY = mouse_atual.Y;

            if ((mouse_atual.LeftButton == ButtonState.Pressed))
            {
                //Comecar
                if (new Rectangle(300, 270, 200, 61).Contains(mouse_atual.X, mouse_atual.Y))
                {
                    LetraAtual = TrocaLetraMenu.Comecar;
                    //MediaPlayer.Play(musicajogo);
                }
                //Creditos
                if (new Rectangle(300, 330, 190, 61).Contains(mouse_atual.X, mouse_atual.Y))
                {
                    LetraAtual = TrocaLetraMenu.Creditos;
                }
                //Instrucoes
                if (new Rectangle(300, 390, 235, 61).Contains(mouse_atual.X, mouse_atual.Y))
                {
                    LetraAtual = TrocaLetraMenu.Instrucoes;
                }
            }
            else
            {
                LetraAtual = TrocaLetraMenu.Introducao;
            }

            if ((mouse_atual.LeftButton == ButtonState.Released) && (mouse_anterior.LeftButton != ButtonState.Released))
            {
                //Comecar
                if (new Rectangle(300, 270, 200, 61).Contains(mouse_atual.X, mouse_atual.Y))
                {
                    //MenuAtual = TrocaMenu.Comecar;
                    Game1.cenaAtual = Game1.Cenas.FASE01;
                  //  MediaPlayer.Stop();
                  //  MediaPlayer.Play(MusicaStart);

                }
                //Creditos
                if (new Rectangle(300, 330, 190, 61).Contains(mouse_atual.X, mouse_atual.Y))
                {
                    //MenuAtual = TrocaMenu.Creditos;
                    Game1.cenaAtual = Game1.Cenas.CREDITOS;
                }
                //Instrucoes
                if (new Rectangle(300, 390, 235, 61).Contains(mouse_atual.X, mouse_atual.Y))
                {
                    //MenuAtual = TrocaMenu.Instrucoes;
                    Game1.cenaAtual = Game1.Cenas.INSTRUCOES;
                }
            }
            /////////////////////////////////////FAVOR NAO DELETAR AS CONDIÇÕES ABAIXO/////////////////////////////////////

            //if (mouse_atual.LeftButton == ButtonState.Pressed)
            //{
            //    checandoclique = true;//Inicia o verificador do mouse, caso o clique seja solto emcima do botão,
            //    //a opção deseada será escolhida, caso contrário, não acontecerá nada
            //}
            //if (mouse_atual.LeftButton == ButtonState.Pressed)
            //{
            //    if (new Rectangle(300, 270, 200, 61).Contains(mouse_atual.X, mouse_atual.Y))
            //    {
            //        LetraAtual = TrocaLetraMenu.Comecar;
            //    }
            //    if (new Rectangle(300, 330, 190, 61).Contains(mouse_atual.X, mouse_atual.Y))
            //    {
            //        LetraAtual = TrocaLetraMenu.Creditos;
            //    }
            //    if (new Rectangle(300, 390, 235, 61).Contains(mouse_atual.X, mouse_atual.Y))
            //    {
            //        LetraAtual = TrocaLetraMenu.Instrucoes;
            //    }
            //}
            //else
            //{
            //    LetraAtual = TrocaLetraMenu.Introducao;
            //}
            //if (new Rectangle(300, 270, 200, 61).Contains(mouse_atual.X, mouse_atual.Y))
            //{
            //    LetraAtual = TrocaLetraMenu.Comecar;
            //}
            //if (new Rectangle(300, 330, 190, 61).Contains(mouse_atual.X, mouse_atual.Y))
            //{
            //    LetraAtual = TrocaLetraMenu.Creditos;
            //}
            //if (new Rectangle(300, 390, 235, 61).Contains(mouse_atual.X, mouse_atual.Y))
            //{
            //    LetraAtual = TrocaLetraMenu.Instrucoes;
            //}
            //if (checandoclique == true)
            //{
            //    if (mouse_atual.LeftButton == ButtonState.Released)
            //    {
            //        //Comecar
            //        if (new Rectangle(300, 270, 200, 61).Contains(mouse_atual.X, mouse_atual.Y))
            //        {
            //            MenuAtual = TrocaMenu.Comecar;
            //        }
            //        //Creditos
            //        if (new Rectangle(300, 330, 190, 61).Contains(mouse_atual.X, mouse_atual.Y))
            //        {
            //            Game1.cenaAtual = Game1.Cenas.CREDITOS;
            //        }
            //        //Instrucoes
            //        if (new Rectangle(300, 390, 235, 61).Contains(mouse_atual.X, mouse_atual.Y))
            //        {
            //            MenuAtual = TrocaMenu.Instrucoes;
            //        }
            //    }
            //}
            //if (mouse_atual.LeftButton == ButtonState.Pressed)
            //{
            //    if (!new Rectangle(300, 270, 200, 61).Contains(mouse_atual.X, mouse_atual.Y) &&
            //        (!new Rectangle(300, 330, 190, 61).Contains(mouse_atual.X, mouse_atual.Y)) &&
            //        (!new Rectangle(300, 390, 235, 61).Contains(mouse_atual.X, mouse_atual.Y)))
            //    {
            //        checandoclique = false;
            //    }
            //}
        }


        public void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(fundo, new Rectangle(0, 0, Window.ClientBounds.Width, Window.ClientBounds.Height), Color.White);

            switch (MenuAtual)
            {
                case TrocaMenu.Comecar:
                    MediaPlayer.Stop();
                    MediaPlayer.Play(MusicaStart);
                    Game1.cenaAtual = Game1.Cenas.FASE01;
                    break;

                case TrocaMenu.Introducao:
                    break;

                 case TrocaMenu.Creditos:
                    Game1.cenaAtual = Game1.Cenas.CREDITOS;
                 break;

                case TrocaMenu.Instrucoes:
                    Game1.cenaAtual = Game1.Cenas.INSTRUCOES;
                    break;
            }

            switch (LetraAtual)
            {
                case TrocaLetraMenu.Introducao:
                    spriteBatch.Draw(botao_comecar, new Rectangle(300, 270, 215, 61), new Rectangle(12, 1, 251, 61), Color.White);
                    spriteBatch.Draw(botao_creditos, new Rectangle(300, 330, 210, 61), new Rectangle(12, 1, 251, 61), Color.White);
                    spriteBatch.Draw(botao_instrucoes, new Rectangle(300, 390, 235, 61), new Rectangle(12, 1, 280, 61), Color.White);
                    break;

                case TrocaLetraMenu.Comecar:
                    spriteBatch.Draw(botao_comecar, new Rectangle(300, 270, 215, 61), new Rectangle(330, 1, 251, 61), Color.White);
                    spriteBatch.Draw(botao_creditos, new Rectangle(300, 330, 210, 61), new Rectangle(12, 1, 251, 61), Color.White);
                    spriteBatch.Draw(botao_instrucoes, new Rectangle(300, 390, 235, 61), new Rectangle(12, 1, 280, 61), Color.White);
                    break;

                case TrocaLetraMenu.Creditos:
                    spriteBatch.Draw(botao_comecar, new Rectangle(300, 270, 215, 61), new Rectangle(12, 1, 251, 61), Color.White);
                    spriteBatch.Draw(botao_creditos, new Rectangle(300, 330, 210, 61), new Rectangle(330, 1, 251, 61), Color.White);
                    spriteBatch.Draw(botao_instrucoes, new Rectangle(300, 390, 235, 61), new Rectangle(12, 1, 280, 61), Color.White);
                    break;

                case TrocaLetraMenu.Instrucoes:
                    spriteBatch.Draw(botao_comecar, new Rectangle(300, 270, 215, 61), new Rectangle(12, 1, 251, 61), Color.White);
                    spriteBatch.Draw(botao_creditos, new Rectangle(300, 330, 210, 61), new Rectangle(12, 1, 251, 61), Color.White);
                    spriteBatch.Draw(botao_instrucoes, new Rectangle(300, 390, 235, 61), new Rectangle(295, 1, 280, 61), Color.White);
                    break;
            }


            if (ponteiroVisivel)
                spriteBatch.Draw(ponteiroImagem, new Vector2(ponteiroPosX, ponteiroPosY), Color.White);
        }
    }
}

